package br.ufscar.acumaaf.smc.service;

import br.ufscar.acumaaf.smc.activity.SincronizaDado;
import br.ufscar.acumaaf.smc.dao.DadoSessaoDAO;
import br.ufscar.acumaaf.smc.dao.SessaoDAO;
import br.ufscar.acumaaf.smc.model.DadoSessao;
import br.ufscar.acumaaf.smc.model.Sessao;
import br.usfacar.acumaaf.smc.webservice.RestClientDadoSessao;
import android.R;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;


public class SincronizaDadosSessao extends Service{
		
	private static final int HELLO_ID = 2;
	
	public void onStart(Intent intent, int startId){
		boolean sincronizou = RestClientDadoSessao.enviaSincronizacaoTabelaDadoSessao(getApplicationContext());
		if(sincronizou){
			NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
			Notification notification = new Notification(R.drawable.ic_dialog_alert, "Sucesso!",System.currentTimeMillis());
			notification.defaults |= Notification.DEFAULT_SOUND;
			Context context = getApplicationContext();
			CharSequence contentTitle = "Sincronização realizada";
			CharSequence contentText = "Os dados foram enviados ao SIAF.";
			Intent notificationIntent = new Intent(this, SincronizaDadosSessao.class);
			PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
			notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
			notificationManager.notify(HELLO_ID,notification);
			
			//Deletando os registros que já foram sincronizados
			for (Sessao sessao : new SessaoDAO(context).buscarTodasSessoesParaSincronizar()) {
				for(DadoSessao dadoSessao : new DadoSessaoDAO(context).buscarTodosDadosSessoesPeloCodigoSessao(sessao.getCodigoSessao())){
					new DadoSessaoDAO(context).deletaDadoSessao(Long.valueOf(dadoSessao.getCodigoDadoSessao()));
				}
				new SessaoDAO(context).deletaSessao(Long.valueOf(sessao.getCodigoSessao()));
			}
			
		}
		else{
			NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
			Notification notification = new Notification(R.drawable.ic_dialog_alert, "Atenção!",System.currentTimeMillis());
			notification.defaults |= Notification.DEFAULT_SOUND;
			Context context = getApplicationContext();
			CharSequence contentTitle = "Problemas na Sincronização";
			CharSequence contentText = "Verifique sua conexão com a Internet.";
			Intent notificationIntent = new Intent(this, SincronizaDado.class);
			PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
			notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
			notificationManager.notify(HELLO_ID,notification);
		}
		stopSelf();
	}
	
	@Override
	public IBinder onBind(Intent intent) {
		return null;
	}
}
